package busco

// @schema_export --ident=schema --json --config=创建角色
// @schema_go
// @cache_go
// @cache_ts
// @alias 创建角色
type B创建角色 struct {
	// @alias 标旗
	B标旗 map[C创建角色标旗]bool

	// @alias 角色模式
	J角色模式 J角色模式

	// 多角色模式下生效
	// @alias 角色最大值
	J角色最大值 int

	// 允许[标旗.跳过创角界面]时的配置项
	// @alias 跳过创角界面
	T跳过创角界面 *S跳过创角界面

	// 核心属性是主控单位、奖励和卡包组
	// 其他的属性也可以通过[选择项]提供
	// 场景：激战2通过种族、职业、性别来决定一个角色；服务器只需要知道选择的是哪一个角色，客户端负责展现选择的顺序和过程
	// @alias 角色组
	X角色组 []*S创建角色_角色

	// 开始的选题组，用于选择[角色组]中的一个角色
	// @alias 选题组
	X选题组 map[string]string `link:"选题"`

	// 完成时执行
	// @alias 完成执行
	W完成执行 map[string]string `link:"执行"`
}

type S创建角色_角色 struct {
	// 根据选项决定最终的角色，格式为：第一个选中的值-第二个选中的值-...
	// 选中的值：数字或[*]号，[*]号表示不限
	// @alias 匹配选项
	P匹配选项 string

	// @alias 角色
	J角色 string `link:"角色"`

	// 奖励初始物品、宠物、雇佣兵
	// @alias 奖励
	J奖励 string `link:"奖励"`

	// 选择角色后提供的可选项，用于决定初始奖励
	// @alias 选题组
	X选题组 map[string]string `link:"选题"`
}

type S跳过创角界面 struct {
	// @alias 名字处理方式
	M名字处理方式 T跳过创建角色_名字处理方式
	// 当使用名玩家编号或随机编号作为名字时使用的前缀
	// 格式："前缀${name}后缀"
	// @alias 名字格式
	M名字格式 string
}

// @schema_export --ident=schema --json
// @schema_go
// @cache_go
// @cache_ts
// @alias 创建角色标旗
type C创建角色标旗 int

const (
	// 单角色模式下生效；某些游戏不需要创建角色功能可跳过；角色名字自动生成
	// 场景：类剑与远征等以卡片为主的游戏，登陆后直接进入游戏
	C创建角色标旗_自动创建角色 C创建角色标旗 = iota
	//
	C创建角色标旗_与主控单位同步经验和等级
)

// @schema_export --ident=schema --json
// @schema_go
// @cache_go
// @cache_ts
// @alias 角色模式
type J角色模式 int

const (
	// 类似于剑与远征，只包含创建角色功能
	J角色模式_单角色 J角色模式 = iota
	// 类似于传奇、激战2，包含创建角色和角色列表
	J角色模式_多角色
)

// @schema_export --ident=schema --json
// @schema_go
// @cache_go
// @cache_ts
type T跳过创建角色_名字处理方式 int

const (
	T跳过创建角色_名字处理方式_使用玩家编号 T跳过创建角色_名字处理方式 = iota
	T跳过创建角色_名字处理方式_使用随机编号
	T跳过创建角色_名字处理方式_使用固定名字
	T跳过创建角色_名字处理方式_使用随机名字字库
)
